import { createSlice } from '@reduxjs/toolkit'
import request from "@/utils/request"

export const user = createSlice({
  // 命名空间，在调用action的时候会默认的设置为action命令的前缀,避免冲突
  name: 'user',
  // 1. 定义变量(状态数据)
  initialState: {
    // 当前登录人信息
    info: {}
  },
  // 2. 定义reducers更新变量(其中函数属性名作为action，在组件中可以dispatch触发reducer函数更新状态)
  reducers: {
    setInfo (state, action) {
      state.info = action.payload
    }
  },
})

// 导出action函数(组件中可以dispatch(action函数)触发reducer更新状态)
export const { setInfo } = user.actions

// 3. 异步action
export function getUserAction (payload) {
  return async (dispatch, getState) => {
    const { data } = await request.get('/user/profile')
    console.log('用户信息：', data.data)
    dispatch(setInfo(data.data))
  }
}

// 导出reducer(创建store使用)
export default user.reducer